package com.Algorithm.Study.ThinkTest;
/*
*  异或^   同者死,不同生
*  1.找唯一不重复
*
*
* */
public class YiHuoStudy {

}

// 找唯一不重复 偶数次中的奇数次
class UniqueNoRepeat{
    public static void main(String[] args) {
        int arr[] = new int[]{1,1,2,2,3,3,5,6,6};
        int len = arr.length;
        int unique = arr[0];   // 此处直接用0和1....可以直接用0异或
        for (int i = 1; i < len; i++) {
            unique = unique^arr[i];
        }
        System.out.println(unique);
    }

}


class TwoNoRepeat{


    public static void main(String[] args) {
        int arr[] = new int[]{5,6,5,6,1,2,3,1,2,3,7,8,1,1};
        int len = arr.length;
        int eor = 0;
        int eorRightOne = 0;
        for (int i = 0; i < len; i++) {
            eor = eor ^ arr[i];
        }

       eorRightOne = eor & (~eor + 1); // 取最右的1

        int a = 0; // 我们要的其中的一个
        for (int cur : arr) {
            if((eorRightOne & cur)==1){  // 选出只有与eorRightOne同一位的进行计算
                a=a^cur;
            }
        }


        System.out.println(a);
        System.out.println(eor^a);



    }
}


